package com.aurora.leetcode.answer;

/**
 * @author Aurora
 * createTime 2022.11.04 22:53:57
 * @className PlusOne_66.java
 */
public class PlusOne_66 {
    /**
     * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
     * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
     * 你可以假设除了整数 0 之外，这个整数不会以零开头。
     * */
//my answer one
    public int[] plusOne(int[] digits) {
        int length = digits.length;
        int[] array = new int[length+1];
//        if(digits[0] == 9)
//            array = new int[length+1];
        int plusOne = 1;
        for(int i=length-1; i>=0; --i){
            if(plusOne != 0)
                digits[i] += plusOne;
            if(digits[i] > 9){
                digits[i] = 0;
            }else{
                plusOne = 0;
                break;//可以直接返回数组
            }
            array[i+1] = digits[i];
        }
        if(plusOne != 0) {
            array[0] = 1;
            return  array;
        }
        return digits;
    }

    //official answer
    public int[] plusOne2(int[] digits) {
        int len = digits.length;
        for (int i = len - 1; i >= 0; i--) {
            digits[i] = (digits[i] + 1) % 10;
            if (digits[i] != 0) {
                return digits;
            }
        }
        digits = new int[len + 1];
        digits[0] = 1;
        return digits;
    }


}
